package com.aurora.gulimall.product;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
import org.springframework.transaction.annotation.EnableTransactionManagement;

/**
 * 1、整合MyBatais-plus
 *      1）、导入依赖
 *      2）、配置
 *          1、配置数据源；
 *              1）、导入数据库的驱动
 *              2）、在application.yml配置数据源相关的信息
 *          2、配置mybatis-plus
 *              1）、使用@MapperScan
 *              2）、告诉MyBatis-plus，sql映射文件位置
 * 2、逻辑删除
 *  1) 配置全局的逻辑删除规则(省略)
 *  2) 配置逻辑删除的组件bean(省略)
 *  3）给Bean加上逻辑删除注解@TableLogic
 *
 *  3、JSR303数据校验
 *      1）给bean添加校验注解:javax.validation.constrains,并定义自己的message提示
 *      2）开启校验功能 @Valid
 *      效果：校验错误后会有响应
 *      3）紧跟校验的bean添加BindingResult，就可以得到校验的结果
 *      4) 分组校验（多场景的复杂校验）：给校验注解标注什么情况下需要校验；
 *                  使用校验注解@Validated标注分组情况;
 *                  分组校验时，没有分组的注解不会生效
*       5）自定义校验 ：编写自定义校验注解
 *                   编写自定义校验器
 *                   关联自定义校验器和校验注解
 * */
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients("com.aurora.gulimall.product.feign")
@EnableRedisHttpSession
public class GulimallProductApplication {
    public static void main(String[] args) {
        SpringApplication.run(GulimallProductApplication.class,args);
    }

}
